/**
 * Created by 011926 on 2014/9/11.
 * 列表页面展示
 */

var dataZh ={
    obj:null,//要操作的对象，例子中的#tablePageDiv
    func:null
}


/**
 * 初始化ZhTable
 * @param obj 要操作的对象，例子中的#tablePageDiv
 * @param func 填充表格的方式，传function对象，会有三个参数tds(一行里面的所有td集合),data(一行数据，json格式),index(当前行数)；例子：
 function initData(tds,data,index)
 {
     $(tds[0]).html(data.name);
     $(tds[1]).html(data.name1);
     $(tds[2]).html(data.name2);
 }
 */
function initZhTable(obj,func,isLoad){
    obj = $(obj);
    dataZh.obj = obj;
    dataZh.func = func;
    //绑定查询按钮点击事件
    $(dataZh.obj).find("#searchDiv .searchBtn").click(function()
    {
        reloadTableDate(1);
    });

    //初始化全选
    var checkAll = $(dataZh.obj).find("#tableDiv thead .checkAll");
    if(checkAll != null)
    {
        checkAll.click(function(){
            $(dataZh.obj).find("#tableDiv tbody input[type='checkbox']").prop("checked",$(this).is(':checked'));
        });
    }

    //页面初始化时，加载数据
    if(isLoad)
    {
        reloadTableDate(1);
    }
}

initZhTable.prototype.getAllChecked = function()
{
    var ids = "";
    $(dataZh.obj).find("#tableDiv tbody input[type='checkbox']").each(function(){
        if($(this).is(':checked') == true){
            if(ids == "")
            {
                ids =$(this).val();
            }
            else{
                ids = ids+"," +$(this).val();
            }
        }
    });
    return ids;
}


/**
 *
 * @param obj 要操作的对象，例子中的#tablePageDiv
 * @param size 页面个数
 */
function reloadPagination(size,activeIndex)
{
    activeIndex = Number(activeIndex);
    size = Number(size);

    var begin = 1;//显示的第一个页面号数
    var end = size;//显示的第一个页面号数
    var beginNotEnd = false;//开始的页号不是1
    var endNotEnd = false;//最后的页号也没有显示完
    //如果页数大于20，则要采取措施了，不然页面放不下
    //策略就是在被选中的按钮 左右各放 10个
    if(size>21){
        if(activeIndex>11)
        {
            beginNotEnd = true;
            begin = activeIndex-10;
        }
        if( (activeIndex+10) < size)
        {
            endNotEnd = true;
            end = activeIndex +10;
        }
    }

    var page = $(dataZh.obj).find("#tableDiv .pagination");
    if(size != null && size > 0)
    {
        var btns = "<li><a href='#'>&laquo;</a></li>";
        if(beginNotEnd)
        {
            btns = btns + "<li><a href='#'>...</a></li>";
        }
        for(var i=begin;i<=end;i++)
        {
            if(i == activeIndex)
            {
                btns = btns +"<li class='active'><a href='#'>"+i+"</a></li>";
            }
            else{
                btns = btns +"<li><a href='#'>"+i+"</a></li>";
            }
        }
        if(endNotEnd)
        {
            btns = btns + "<li><a href='#'>...</a></li>";
        }
        btns = btns + "<li><a href='#'>&raquo;</a></li>";

        page.html(btns);
        var lis = $(dataZh.obj).find("#tableDiv .pagination li");

        /*
            绑定前一页按钮
         */
        lis.first().click(function() {
            //被选中的
            var activeLi = $(dataZh.obj).find("#tableDiv .pagination .active");
            //前一个按钮里面的值
            var prevVal = ($(activeLi).prev("li").find("a")).html();
            //这个值是数字，代表还可以往前移
            if(!isNaN(prevVal))
            {
                activeLi.removeClass("active");
                $(activeLi).prev("li").addClass("active");
                //重新加载数据
                reloadTableDate(prevVal);
            }
            return false;
        });

        /*
            绑定后一页按钮
         */
        lis.last().click(function() {
            //被选中的
            var activeLi = $(dataZh.obj).find("#tableDiv .pagination .active");
            //后一个按钮里面的值
            var nextVal = ($(activeLi).next("li").find("a")).html();
            //这个值是数字，代表还可以往后移
            if(!isNaN(nextVal))
            {
                $(activeLi).removeClass("active");
                $(activeLi).next("li").addClass("active");
                //重新加载数据
                reloadTableDate(nextVal);
            }
            return false;
        });

        var bf = 1;
        var be = end-begin+1;
        if(beginNotEnd)
        {
            bf++;
            be++;
        }

        /*
            绑定中间按钮
         */
        for(var i=bf;i<(be+1);i++)
        {
            $(lis.eq(i)).click(function () {
                var clickVal = $(this).find("a").html();
                var activeLi = $(dataZh.obj).find("#tableDiv .pagination .active");
                var activeVal = $(activeLi).find("a").html();
                if(!isNaN(clickVal))
                {
                    //点击的不是当前已经选中的
                    if(activeLi != activeVal)
                    {
                        //重新加载数据
                        reloadTableDate(clickVal);
                    }
                }
                return false;
            });
        }
    }
}

/**
 * 跳到pageIndex页
 * @param pageIndex
 */
function reloadTableDate(pageIndex)
{
    if(isNaN(pageIndex) || pageIndex <= 0)
    {
        pageIndex = 1;
    }
    //获得搜索框数据
    var searchForm = $(dataZh.obj).find("#searchDiv form");
    var url = searchForm.attr("url");
    var queryData = "pageIndex="+pageIndex+"&"+searchForm.serialize();
    $.ajax({
        type: "POST",
        url: url,
        data: queryData,
        success: function(data){
            if(data != null)
            {

                if(data.tableData != null && data.tableData.length > 0)//加载数据
                {
                    //根据头部thead td 来推断td有多少
                    var length = ($(dataZh.obj).find("#tableDiv table thead tr th")).length;
                    var newTrs = "";
                    for(var i=0;i<data.tableData.length;i++)
                    {
                        var tds = [];
                        for(var k=0;k<length;k++)
                        {
                            tds.push($("<td></td>"));
                        }
                        dataZh.func(tds,data.tableData[i],i);

                        newTrs = newTrs+"<tr>"
                        for(var k=0;k<length;k++)
                        {
                            newTrs = newTrs +"<td>"+ tds[k].html()+"</td>";
                        }
                        newTrs = newTrs +"</tr>";
                    }
                    ($(dataZh.obj).find("#tableDiv table tbody")).html(newTrs);
                }
                else{
                    ($(dataZh.obj).find("#tableDiv table tbody")).html("");
                }
                if(data.pageCount != null)//加载分页
                {
                    reloadPagination(data.pageCount,pageIndex)
                }
            }
        }
    });

}